package self.zhangkang.chart.tools

import java.text.SimpleDateFormat
import java.util.Locale

/**
 * @author : Android-张康
 * created on: 2023/8/11 18:47
 * description: 时间格式化工具
 */
object DateTools {

    private val _yyyy_MM_dd_HH_mmDateFormat =
        SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault())

    private val _yyyy_MM_ddDateFormat =
        SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())

    private val _MM_ddDateFormat = SimpleDateFormat("MM-dd", Locale.getDefault())

    /**
     * 一天的毫秒数
     */
    private const val ONE_DAY_TIME_MILLIS = 24 * 60 * 60 * 1000L

    /**
     * 判断是否为同一天
     *
     * @param todayTime 今天的时间戳
     * @param otherTime 另一个时间戳
     *
     * @return 同一天今天返回 true 否则返回false
     */
    fun isSameDay(todayTime: Long, otherTime: Long): Boolean {
        val today = todayTime / ONE_DAY_TIME_MILLIS
        val otherDay = otherTime / ONE_DAY_TIME_MILLIS
        return today == otherDay
    }

    /**
     * 是否大于今天
     *
     * @param todayTime 今天的时间戳
     * @param otherTime 另一个时间戳
     *
     * @return 大于今天返回 true 否则返回false
     */
    fun isTtGreaterThanToday(todayTime: Long, otherTime: Long): Boolean {
        val today = todayTime / ONE_DAY_TIME_MILLIS
        val otherDay = otherTime / ONE_DAY_TIME_MILLIS
        return today < otherDay
    }

    /**
     * 将 Long 格式的时间转换成 yyyy-MM-dd HH:mm 格式
     */
    fun toyyyy_MM_dd_HH_mm(time: Long): String {
        return _yyyy_MM_dd_HH_mmDateFormat.format(time)
    }

    /**
     * 将 Long 格式的时间转换成 yyyy-MM-dd 格式
     */
    fun toyyyy_MM_dd(time: Long): String {
        return _yyyy_MM_ddDateFormat.format(time)
    }

    /**
     * 将 Long 格式的时间转换成 MM-dd 格式
     */
    fun toMM_dd(time: Long): String {
        return _MM_ddDateFormat.format(time)
    }

    /**
     * 将 yyyy-MM-dd 格式的时间转换成 Long
     */
    fun yyyy_MM_ddToLong(time: String): Long? {
        return _yyyy_MM_ddDateFormat.parse(time)?.time
    }
}